c<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>省市区三级联动</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            font-size: 12px;
        }

        .wrap {
            width: 1200px;
            margin: 100px auto;
            text-align: center;
            line-height: 40px;
        }

        h2 {
            font-size: 20px;
        }

        select {
            width: 130px;
            height: 30px;
        }
    </style>
</head>

<body>
    <div class="wrap">
        <h2>请选择省/市/区</h2>
        <!-- 省 -->
        <select name="" id="province">
            <option value="">请选择您所在的省份</option>
        </select>
        <!-- 市 -->
        <select name="" id="city">
            <option value="">请选择您所在的市</option>
        </select>
        <!-- 区 -->
        <select name="" id="area">
            <option value="">请选择您所在的区/县</option>
        </select>
    </div>
    <script src="data.js"></script>
    <script>
       //获取省市区选项标签
       var provice=document.querySelector("#province");
       var city=document.querySelector("#city");
       var area=document.querySelector("#area");
       
                
        //加载省的数据
        initData(provice,data);
        //加载市的数据
        //initData(city,data[0].city);
        //加载县的数据
        //initData(area,data[0].city[0].city);

        //  默认情况下，将市的数据保存到arr
        var arr = data[province.selectedIndex].city;
        /*
        省发生变化
        */
        provice.onchange=function(){
            //选择下拉项的下标
            //alert(provice.selectedIndex)
            // 根据省元素的下标，找相应的 市 数据
            // 当前的市 保存到 数组 arr 中
            arr = data[provice.selectedIndex].city;
            //alert(arr);
            // 渲染 市
            initData(city,arr);
            // 渲染 区
            initData(area,arr[0].city);
        }
        /*
        市发生变化
        */
        city.onchange=function(){
             //根据市 下标 找 区 数据
             var areaArr = arr[city.selectedIndex].city;
             initData(area , areaArr); 
        }
        /*
        *封装加载数据函数
        */
        function initData(dom,data){
            dom.innerHTML = data.map(function(item){
                return `
                     ${ 
                        typeof item =="string" ? `<option>${item}<option>` : `<option>${item.name}</option>`
                      } 
                    `
                }).join("")
        }
    </script>

    
</body>

</html>